// token   json-web-token 插件

// 引入jwt
const jwt = require("jsonwebtoken");

const secretOrPrivateKey = "web-question-bank"; // 这是加密的key（密钥）

function sign(content) {
  let token = jwt.sign({ content }, secretOrPrivateKey, { expiresIn: "30s" });
  return token;
}

// 从body或query或者header中获取token
function verify(token) {
  return new Promise((resolve, reject) => {
    jwt.verify(token, secretOrPrivateKey, function (err, decode) {
      if (err) {
        //  时间失效的时候/ 伪造的token
        reject(err);
      } else {
        //  成功解密
        resolve(decode);
      }
    });
  });
}

// verify时返回的err的值

// "err": {
//     "name": "TokenExpiredError",
//     "message": "jwt expired",   //  token过了有效期
//     "expiredAt": "2016-11-07T03:31:25.000Z"
// }

// "err": {
//     "name": "JsonWebTokenError",
//     "message": "invalid token"  //  伪造/无效的token
// }

module.exports = {
  sign,
  verify,
};
